<?php
/**
 * 二维码 管理
 *
 * @author    Alex Xun xunzhibin@expert.com
 * @version   1.0
 * @copyright (C) 2018 Jnexpert Ltd. All rights reserved
 * @file      .\common\qrcode\Code.php
 */

namespace app\common\qrcode;

/**
 * 二维码 类
 *
 * @author Alex Xun xunzhibin@jnexpert.com
 * @package common
 */
class Code
{
    /**
     * 生成 二维码
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     *
     * @param array $data 二维码设置参数
     * @param bool $is_base64 转换为base64格式标识
     *
     * @return string
     */
    public function create($data, $is_base64 = FALSE)
    {
        // 实例化 第三方库
        $qrcode = new \SimpleSoftwareIO\QrCode\BaconQrCodeGenerator();

        // 图片格式(PNG，EPS，SVG)，默认SVG格式
        if(isset($data['format']) && $data['format']) {
            $qrcode->format($data['format']);
        }
        // 尺寸
        $size = 200;
        if(isset($data['size']) && $data['size']) {
            $size = $data['size'];
        }
        $qrcode->size($size);
        // 颜色
        if(isset($data['color']) && $data['color']) {
            $qrcode->color(
                $data['color']['red'],
                $data['color']['green'],
                $data['color']['blue']
            );
        }
        // 背景色
        if(isset($data['background'])) {
            $qrcode->backgroundColor(
                $data['background']['red'],
                $data['background']['green'],
                $data['background']['blue']
            );
        }
        // 边距
        if(isset($data['margin'])) {
            $qrcode->margin($dat['margin']);
        }
        //容错级别
        if(isset($data['error'])) {
           $qrcode->errorCorrection($data['error']);
        }
        // 编码 默认使用 ISO-8859-1
        if(isset($data['coding'])) {
            $qrcode->encoding($data['coding']);
        }
        // logo 只支持PNG格式
        if(isset($data['logo'])) {
            $qrcode->merge(
                $data['logo']['filename'],
                $data['logo']['percentage'],
                $data['logo']['absolute']
            );
        }
        // content
        $content = '';
        if(isset($data['content']) && $data['content']) {
            $content = $data['content'];
        }

        // 生成
        $result = $qrcode->generate($content);

        // PNG格式 base64
        if(isset($data['format']) && $data['format'] === 'png' && $is_base64) {
            $result = "data:image/png;base64, " . base64_encode($result);
        }

        return $result;
    }
}
